define(["history","lab"],function(_history,lab) {
    function init(flag) {
        if(flag) {
            _history.push("labs", 'labs');
        }
       var labs = getModule();
       getData(labs);
       $('header').after(labs);
   }

    function remove(id) {
       $('#labs').fadeOut('slow',function(){
           this.remove();
           lab.init(id);
           lab.trigger('notice',true);
       });
    }

   function getModule() {
       var labs;
       $.ajax({
           async : false,
           method : 'GET',
           url : 'app/labs/labs.html',
           datType : 'string',
           success : function(response){
               if(typeof(response) === 'string'){
                   labs = response;
               }
           }
       });
       return $(labs);
   }

   function getData(module) {
       var ul = module.find('ul');
       $.ajax({
           method : 'GET',
           url : 'test/labs.php',
           dataType : 'json',
           success : function(response) {
               if(response.status === 'ok') {
                   var data = response['data'];
                   $.each(data,function(k,v) {
                       var li = $('<li class="labs-li"></li>');
                       var div = $('<div class="labs-item"></div>');
                       div.data('id', v.id)
                          .css('background-image','url("'+ v.url +'")');
                          //.append(v.name);
                       div.click(function() {
                           remove(v.id);
                       });
                       div.appendTo(li);
                       ul.append(li);
                   })
               }
           },
           error : function(XMLHttpRequest, textStatus, errorThrown) {
               alert('error:' + XMLHttpRequest + textStatus + errorThrown);
           }
       })
   }

   return {
       init : init,
       remove : remove
   }
});